<div class='content'>
	<h2>txtBlog v0.6 博客系统使用手册</h2>
	<p>txtBlog是用来管理笔记的系统。已经比较好用，但<span class=red>目前还不易用，所以您需要详细阅读本手册。</span>
	<p>文件格式：目前支持txt、html、markdown三种笔记格式，您可以根据需要自有选择。
	<p>适合人群：需要读者有初步的php编程经验，最好懂点html/css/markdown。



	<h2>一、如何启动该博客系统？</h2>
	<h3>1.如何在windows的apache上，使用本地虚拟域名启动该博客系统？</h3>
	<p>(1)在host文件设置虚拟域名:  C:\Windows\System32\drivers\etc\hosts 末尾添加一行: IP地址 虚拟域名<br> 127.0.0.1       blog2.dawneve.cc</p>
	<p>(2)在apache中设置虚拟域名指向的文件夹: G:\xampp\apache\conf\extra\httpd-vhosts.conf 末尾添加几行: </p>
<pre>
&lt;VirtualHost *:80&gt;
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "G:/xampp/htdocs/txtBlog2"
    ServerName blog2.dawneve.cc
	ServerAlias blog.m.biomooc.com blog.biomooc.com
    ErrorLog "logs/blog2.com-error.log"
    CustomLog "logs/blog2.com-access.log" common
&lt;/VirtualHost&gt;
</pre>
	<p>保存并重启apache。</p>
	<p>(3)在G:/xampp/htdocs/txtBlog2下放置本博客系统的代码。直接从github下载解压或者在上一级文件中git clone克隆代码；</p>
	<p>(4)浏览器输入 blog2.dawneve.cc 即可访问本博客系统。</p>

	<h3>2.数据文件夹默认是/data/，如何修改数据文件夹的路径？</h3>
	<p>(1)博客系统/DawnPHP/config.php中修改BLOG_MENU为你的txt文件所在的目录，末尾要有/。<br>
	可以使用相对于/data/的相对路径:<br>
	defined('BLOG_MENU')   or define('BLOG_MENU',     DAWN_PATH . '../../../../../c1_BR_analysis_code/');<br>
	或者使用绝对路径，<br>
	defined('BLOG_MENU')   or define('BLOG_MENU',     'G:/c1_BR_analysis_code/');</p>
	<p>(2)在该目录上一层，也就是 G:/c1_BR_analysis_code/ 内建立固定名字的顶部目录文件 TopMemu.php，内容是php数组格式的文件夹名字，比如示例文件:<pre>
&lt;?php
return array (
  #'dirNames' => 'some description here',
  '0original_note' => 'c1 APA',
);</pre>
	以及文件夹同名的左侧目录文件 0original_note.php，内容是php数组格式的文件名：<pre>
&lt;?php
return array (

  array (
    0 => 1,
    1 => '前言与资料',
    2 => array (
      array('20190503_RE_APA','20190503Note_RE_APA','txt',),
      array('20190225_RE_cell_line','20190225Note_RE_cell_line','txt',),
    ),
  ),
);
</pre></p>
	<p>(3)刷新即可看到新的博客内容。</p>
	
	<p>txt格式要符合一定的要求，标题才会汇总显示出来。<pre>
========================================
这是标题
----------------------------------------
</pre></p>
	<p>(4)如果有报错，可能还需要注释掉首页index.php中带有$cache的三行缓存代码。</p>
	<p>tips: <span class='red'>目前图片指向还是默认data/下，而不是移动后的data/。</span>一旦移动了 /data/ 的位置，则图片都失效。</p>

	<div class=space40></div>
	<div class=space40></div>
	<div class=space40></div>









	<h2>二、如何添加一篇新博客？</h2>
	<ol>
		<li>下载本博客系统所有文件(https://github.com/DawnEve/txtBlog)，清空data目录；</li>
		<li>在data文件夹下新建文本文件，命名为TopMemu.php，保存顶部目录数据。仿照如下实例增删键值对：</li>
<pre>
&lt;?php
return array (
  'Git' => '版本控制', 		//键值对的健会解析为a标签显示内容，值会解析为a标签的title(可选)
  'html' => '前端框架',
  'css' => 'css增强',
  'android'=>'',
);
</pre>
		<li>在data文件夹下新建文本文件，命名为 Git.php，保存 Git目录 左侧边栏目录数据。仿照如下格式：</li>
<pre>
&lt;?php
return array (
  0 => 
  array (
    0 => 1,
    1 => '前言与资料',	//这里是左侧边一级分类名，不对应博客内容，只起到显示分类的作用；
    2 => 
    array (
		array('项目描述','git001','html',),		//这里对应左侧边二级分类，名字是'项目描述'，对应文件名git001，文件扩展名为html
		array('参考资料','git002','txt'),		//对应文件名git002.txt
		array('About Me','aboutMe','md'),		//markdown格式的支持后缀名为markdown、md
		array('博客使用手册','txtBlog000Example','html'),
    ),
  ),

    
  
  array (
    0 => 2,
    1 => 'txtBlog发布笔记', 	//这是另一个左侧边一级分类名，不对应博客内容，只起到显示分类的作用；
    2 => 
    array (
	  array('release0.3.3','txtBlog001', ),		//这里对应左侧边二级分类，名字是'release0.3.3'，对应文件名txtBlog001，文件扩展名为空表示默认值，默认是html

    ),
  ),
</pre>
		<li>在data文件夹下新建Git文件夹，用来保存你的笔记文件，比如git001.html, git002.txt,aboutMe.md等。</li>
		<li>txt文件可以自由书写，但是如果想使用默认的提取目录功能，建议按照如下格式记录txt笔记：</li>
<pre>
这是txt文件内容的题目

========================================
这是txt文件标题1，前后分别放至少30个=和-
----------------------------------------
这是标题1对应的内容。


========================================
这是txt文件标题2，前后分别放至少30个=和-
----------------------------------------
这是标题1对应的内容。
</pre>
		<li>html文件建议使用如下html标签，便于使用预定义格式。当然你也可以自定义文件内样式表，建议最外围标签加上id选择器，防止样式互相干扰。</li>
<pre>
&lt;div class=content&gt;
	&lt;h2&gt;标题&lt;/h2&gt;
	&lt;p&gt;内容&lt;/p&gt;
	&lt;p&gt;带 &lt;a target="_blank" href='#'&gt;链接&lt;/a&gt; 的内容&lt;/p&gt;
	
&lt;/div&gt;
</pre>
		<li>markdown格式已经可以使用，但还有少量bug。解析器和样式表一直在优化中。markdown语法请百度，或者查看 <a target='_blank' href='index.php?k=html&id=0_2'>markdown语法简明教程</a>。</li>
	</ol>

	
	<div class=space40></div>
	<div class=space40></div>
	<div class=space40></div>
	
	
	
	
	
	
	
	
	
	
	
	<h2>html格式实例：这是h2标签</h2>
	<p>该博客系统设计目标是要支持txt格式的文件，方便组织和阅读我的笔记。现在已经支持MarkDown格式。
	<p>现在支持html格式的笔记，具有简单的html格式化显示功能。本文是html笔记的书写和显示示例。建议<span class=red>使用chrome浏览器，“右击-审查元素”的方式查看源代码。</span></p>
	<p><b>这是强调文字。</b>这是说明文字。</p>
	
	<p>在pre内的是代码，比如：</p>
<pre>
/*
	用于调试，打印php中的变量
*/
function debug($para,$isDie=true){
	//echo '这是代码区域';
	echo '&lt;pre>';
	print_r($para);
	echo '&lt;/pre>';
	if($isDie){
		die();
	}
}
</pre>


	
	<p>使用img标签显示图片：</p>
	<img src='data/php/images/001.jpg' />
	
	
	
	
	<!--这是一个表格-->
	<h3>html格式实例：这是h3标签</h3>
	<p>下面是个表格，配有简单样式。微信接口参数说明：</p>
	<table border="1" cellspacing="0" cellpadding="4" align="center" width="640px">
		<tbody>
			<tr>
				<th style="width:120px">参数</th>
				<th style="width:120px">是否必须</th>
				<th>说明</th>
			</tr>
		
		<tr>
			<td> grant_type</td>
			<td> 是</td>
			<td> 获取access_token填写client_credential</td>
		</tr>
		<tr>
			<td> appid</td>
			<td> 是</td>
			<td> 第三方用户唯一凭证</td>
		</tr>
		<tr>
			<td> secret</td>
			<td> 是	</td>
			<td> 第三方用户唯一凭证密钥，即appsecret</td>
		</tr>
		</tbody>
	</table>

	
	
	<p>下面是链接：</p>
	<p><a href="http://fex.baidu.com/ueditor/#start-config" class="external text" rel="nofollow">百度ueditor编辑器</a>  正在研究这个富文本编辑器，最好自己编一个简易版。</p>
	<p><a href="http://mp.weixin.qq.com/wiki/14/9f9c82c1af308e3b14ba9b973f99a8ba.html" class="external text" rel="nofollow">该文档使用说明</a> 本文样式参考微信文档的样式。</p>
	
	<h2>两种展示代码的方式</h2>
	<p>这是code标签标示的行内代码：<code>code</code>效果。</p>
	
<pre>
	$ echo 'sth';//这是pre标签标示的块状代码；记得转义尖括号&amp;gt; &amp;lt;
</pre>

	<h2>按钮</h2>
	<h3>[推荐]简单的按钮 示例</h3>
	<p> 现在提供的颜色：
		<a target="_blank" class='small button pink' href='http://yihui.name/cn/vitae/'>谢益辉的博客</a>
		<a target="_blank" class='small button green' href='http://yihui.name/cn/vitae/'>谢益辉的博客</a>
		<a target="_blank" class='small button red' href='http://yihui.name/cn/vitae/'>谢益辉的博客</a>
		<a target="_blank" class='small button orange' href='http://yihui.name/cn/vitae/'>谢益辉的博客</a>
		<a target="_blank" class='small button blue' href='http://yihui.name/cn/vitae/'>谢益辉的博客</a>
		<a target="_blank" class='small button yellow' href='http://yihui.name/cn/vitae/'>谢益辉的博客</a>
		<a target="_blank" class='small button white' href='http://yihui.name/cn/vitae/'>谢益辉的博客</a>
	</p>

		
	<p>提供的尺寸：
		<a target="_blank" class='small button orange' href='http://yihui.name/cn/vitae/'>谢益辉的博客</a>
		<a target="_blank" class='medium button orange' href='http://yihui.name/cn/vitae/'>谢益辉的博客</a>
		<a target="_blank" class='large button orange' href='http://yihui.name/cn/vitae/'>谢益辉的博客</a>
		<a target="_blank" class='super button orange' href='http://yihui.name/cn/vitae/'>谢益辉的博客</a>
	</p>
	
	
	
	
	<h3>按钮组 示例</h3>
	<p class="btn">
		<span class="tips">记得star我哦！→ →</span>
		<a class="green" target="_blank" href="https://github.com/DawnEve/txtBlog">txtBlog @ github</a>
		
		<a class="red" target="_blank" href="http://tieba.baidu.com/p/4241959418?pid=81508027693">txtBlog @ tieba</a>
		<a class="blue" target="_blank" href="index.php?k=Git&amp;id=0_3">txtBlog系统使用手册</a>
	</p>
	
	
	<h3>单个按钮 示例</h3>
	<p>
		<a target="_blank" class="non_extensible_button button_01" href="http://training.sensiolabs.com/en/courses/SF3C1-getting-started-with-symfony3">Getting Started with Symfony 3</a>
	</p>
	
	
	
	<h2>引用的样式</h2>
	<p>这是blockquote引用大段文字的效果: </p>
<blockquote><b>有毅力的人怎么可能过的不幸福。</b><br>
我们三天两头嚷嚷着要做一件事，可是最终都不了了之，上学的时候没有毅力每天用心学习，工作时又没有毅力每天都努力进步，最后连自己的健康都无力维持，是的，就差一点点，总是差一点点就成功了，可是这一点点仿佛又是艰难遥远的路程。</blockquote>

	<p>这是blockquote.small引用大段文字的效果: </p>
<blockquote class=small><b>有毅力的人怎么可能过的不幸福。</b><br>
我们三天两头嚷嚷着要做一件事，可是最终都不了了之，上学的时候没有毅力每天用心学习，工作时又没有毅力每天都努力进步，最后连自己的健康都无力维持，是的，就差一点点，总是差一点点就成功了，可是这一点点仿佛又是艰难遥远的路程。</blockquote>


<p>另一种引用效果 pre class=saying: </p>
<pre class=saying><b>这世界上的一半成功来源于坚持，一切失败都来源于半途而废。</b></pre>


	<div class=space40></div>
	<div class=space40></div>
	<div class=space40></div>









	<h2>三、如何按照关键字查找内容？</h2>
	<p>1.根据想找的内容，点击顶部关键词如Linux，点击左侧关键词如awk，然后在正文根据目录查找，或者借助 ctrl+F 查找关键词。</p>
	<p>2.还可以借助git中的linux命令 find/ls/grep等，按关键字直接查找文件。</p>
	<p>$ cd data/</p>
	
	<h4>在某目录下的每个文件内查找关键字：</h4>
	<p>$ ls -R Linux/* | xargs grep -i " mysql " --color=auto #-i 忽略大小写</p>
	<p>$ ls -R NGS/* | xargs grep -P 'samtools\s' --color=auto #高亮关键词</p>
	
	<h4>在当前目录及其子目录下查找</h4>
	<p>$ find ../data/ |xargs grep -i igv --color=auto #忽略大小写，在所有文件夹下查找带igv关键词的行</p>
	<p>$ find ../data/ |xargs grep -i igv --color=auto 2>/dev/null #不显示错误输出</p>
	<p>$ find . | xargs grep "tongji" --color=auto 2>/dev/null  # 推荐用法</p>
	<p>上述命令打包到 data/search.sh，<span class='red'>在data/下使用: $ bash search.sh "方差分析"</span></p>
<pre class=code>
$ cat search.sh //内容，-i 忽略大小写，-n 显示行号
find . | xargs grep -in "$1" --color=auto 2>/dev/null

$ bash search.sh "eclipse" //使用：按关键词搜索，显示文件名和行号，高亮关键词
</pre>
	
	<h4>在当前文件夹下，查找一个.R结尾的文件的路径，其文件内容包含某个关键字：</h4>
	<p>$ find . | grep '.*R$' |  xargs grep 'bulk_PoolSC' #这是科研项目笔记中查找某关键字</p>
	<p>$ find . | grep '.*txt$' | xargs grep 'jupyter notebook' --color=auto #在txt文件中，查找包含jupyter关键字的文件的路径</p>
	
	<div class=space40></div>
	<div class=space40></div>
	<div class=space40></div>









	<h2>四、如何做用户分析？</h2>
	<p>项目根目录下$ cat my_log.txt|grep "IP:"|awk -F":" '{ print $4}' | sort|uniq -c  # 统计来源IP</p>
	<p>如果是服务器版本，日志文件建议放到 backup/ 下。</p>


	
	
	<h2>五、如何用docker快速创建 txtBlog 运行环境？</h2>
	
	<p>博客原环境是 win10 + xampp: php 5.6.33, mysql 5.0.11</p>
<pre>
http://localhost/DawnScholar/phpinfo.php
PHP Version 5.6.33
mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $
Apache/2.4.29 (Win32) OpenSSL/1.0.2n PHP/5.6.33

不使用数据库。
## docker pull php:5.6.33-fpm
</pre>

	<p>使用 apache 镜像创建:</p>
<pre>
2. 开始
(1) 基础镜像
$ docker pull php:5.6.33-apache #神器
备份
	$ docker tag php:5.6.33-apache dawneve/php:5.6.33-apache
	$ docker push dawneve/php:5.6.33-apache

以后拉取该备份：
$ docker pull dawneve/php:5.6.33-apache

$ docker images
REPOSITORY           TAG             IMAGE ID       CREATED       SIZE
dawneve/php          5.6.33-apache   9b87aacce8e4   6 years ago   378MB


(2) git 拉取博客文件
$ cd ~/nginx/www/
$ git clone https://github.com/DawnEve/txtBlog.git

写入日志：权限尽量缩小范围
	## chmod 777 txtBlog
	$ mkdir txtBlog/backup
	$ chmod 777 txtBlog/backup #先设置为777，创建日志后，改为775；如果删掉，无法新建。还是改为777吧。

	$ vim txtBlog/DawnPHP/class/Log.class.php
	修改函数第二个默认参数为 $fileName='backup/my_log.txt'

后续访问后，检查日志：
	$ ls -lth txtBlog/
	total 96K
	drwxrwxrwx  2 wangjl2 wangjl2 4.0K Sep 27 15:39 backup

	$ ls -lth txtBlog/backup/
	total 4.0K
	-rw-r--r-- 1 www-data www-data 539 Sep 27 15:41 my_log.txt



(3) 启动容器
$ docker run --rm -dit --name txtBlog-app -p 8081:80 -v ~/nginx/www/txtBlog:/var/www/html php:5.6.33-apache

$ docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED          STATUS         PORTS                                   NAMES
d4dbcb8c3c89   php:5.6.33-apache   "docker-php-entrypoi…"   11 seconds ago   Up 2 seconds   0.0.0.0:8081->80/tcp, :::8081->80/tcp   txtBlog-app


(4) 端口许可
防火墙 https://console.cloud.tencent.com/lighthouse/instance/detail?rid=4&id=lhins-9ox4ow18&tab=firewall
	允许 8081 端口

iptables 打开该端口：
	$ sudo iptables -I INPUT -p tcp --dport 8081 -j ACCEPT

(5) 查看
http://IP:8081
</pre>

	<p>怎么设置二级域名指向？</p>
	<p>//todo ?</p>

</div>
